package com.ruoyi.cms.service.impl;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

import com.ruoyi.cms.domain.CmsSiteBanner;
import com.ruoyi.cms.domain.CmsSiteBannerr;
import com.ruoyi.cms.domain.vo.CmsSiteWebsitVo;
import com.ruoyi.cms.service.ICmsSiteBannerrService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.cms.mapper.CmsSiteWebsitMapper;
import com.ruoyi.cms.domain.CmsSiteWebsit;
import com.ruoyi.cms.service.ICmsSiteWebsitService;

/**
 * 网站开发模块信息Service业务层处理
 *
 * @author ruoyi
 * @date 2022-08-30
 */
@Service
public class CmsSiteWebsitServiceImpl implements ICmsSiteWebsitService {
    @Autowired
    private CmsSiteWebsitMapper cmsSiteWebsitMapper;

    @Autowired
    private ICmsSiteWebsitService cmsSiteWebsitService;

    @Autowired
    private ICmsSiteBannerrService cmsSiteBannerrService;

    /**
     * 查询网站开发模块信息
     *
     * @param id 网站开发模块信息主键
     * @return 网站开发模块信息
     */
    @Override
    public CmsSiteWebsit selectCmsSiteWebsitById(Long id) {
        return cmsSiteWebsitMapper.selectCmsSiteWebsitById(id);
    }

    /**
     * 查询网站开发模块信息列表
     *
     * @param cmsSiteWebsit 网站开发模块信息
     * @return 网站开发模块信息
     */
    @Override
    public List<CmsSiteWebsit> selectCmsSiteWebsitList(CmsSiteWebsit cmsSiteWebsit) {
        return cmsSiteWebsitMapper.selectCmsSiteWebsitList(cmsSiteWebsit);
    }

    /**
     * 新增网站开发模块信息
     *
     * @param cmsSiteWebsit 网站开发模块信息
     * @return 结果
     */
    @Override
    public int insertCmsSiteWebsit(CmsSiteWebsit cmsSiteWebsit) {
        return cmsSiteWebsitMapper.insertCmsSiteWebsit(cmsSiteWebsit);
    }

    /**
     * 修改网站开发模块信息
     *
     * @param cmsSiteWebsit 网站开发模块信息
     * @return 结果
     */
    @Override
    public int updateCmsSiteWebsit(CmsSiteWebsit cmsSiteWebsit) {
        return cmsSiteWebsitMapper.updateCmsSiteWebsit(cmsSiteWebsit);
    }

    /**
     * 批量删除网站开发模块信息
     *
     * @param ids 需要删除的网站开发模块信息主键
     * @return 结果
     */
    @Override
    public int deleteCmsSiteWebsitByIds(Long[] ids) {
        return cmsSiteWebsitMapper.deleteCmsSiteWebsitByIds(ids);
    }

    /**
     * 删除网站开发模块信息信息
     *
     * @param id 网站开发模块信息主键
     * @return 结果
     */
    @Override
    public int deleteCmsSiteWebsitById(Long id) {
        return cmsSiteWebsitMapper.deleteCmsSiteWebsitById(id);
    }

    @Override
    public List<CmsSiteWebsitVo> getAllInfo() {
        List<CmsSiteWebsit> cmsSiteWebsits = cmsSiteWebsitService.selectCmsSiteWebsitList(null);
        List<CmsSiteBannerr> cmsSiteBannerrs = cmsSiteBannerrService.selectCmsSiteBannerrList(null);

        //封装数据
        List<CmsSiteWebsitVo> collect = cmsSiteWebsits.stream().map(module -> {
            CmsSiteWebsitVo cmsSiteWebsitVo = new CmsSiteWebsitVo();
            BeanUtils.copyProperties(module, cmsSiteWebsitVo);
            List<CmsSiteBannerr> cmsSiteBanners1 = new ArrayList<>();
            cmsSiteBannerrs.stream().forEach(banner -> {
                if (module.getId().equals(banner.getWebsitId())) {
                    cmsSiteBanners1.add(banner);
                }
            });
            //放之前排序
            cmsSiteBanners1.sort(Comparator.comparing(CmsSiteBannerr::getSort));
            cmsSiteWebsitVo.setCmsSiteBannerrs(cmsSiteBanners1);
            return cmsSiteWebsitVo;
        }).collect(Collectors.toList());

        //返回前排序
        collect.sort(Comparator.comparing(CmsSiteWebsitVo::getSort));

        return collect;
    }
}
